package com.example.usercenter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;

/**
 * RedisTemplate配置类
 */
@Configuration
public class RedisTemplateConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){
        //  RedisTemplate<String, Object> 是 Spring Data Redis 提供的一个类，用于执行 Redis 操作。
        //  方法的参数 RedisConnectionFactory 是一个连接工厂，负责创建与 Redis 数据库的连接。它会被自动注入。
        RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
        //  创建了一个 RedisTemplate 对象，用于在应用程序中与 Redis 进行交互。它的键类型是 String，值的类型是 Object，
        //  可以使用这个 RedisTemplate 存储和获取各种类型的对象。
        redisTemplate.setConnectionFactory(connectionFactory);
        //  将传入的 RedisConnectionFactory 设置到 redisTemplate 中，RedisTemplate 会使用这个工厂来建立与 Redis 的连接。
        redisTemplate.setKeySerializer(RedisSerializer.string());
        //  设置 Redis 中键的序列化方式为 String 类型的序列化器。RedisSerializer.string()
        //  是 Spring 提供的默认序列化器，用于将 String 对象转换为字节数组，并反向操作。
        //   Redis 中的所有键都会被处理为字符串。
        return redisTemplate;
    }
}
